if ( unlikely(vlapic == NULL || !vlapic_enabled(vlapic)) )
break;
- if ( test_and_set_bit(vector, &vlapic->irr[0]) )
+ if ( test_and_set_bit(vector, &vlapic->irr[0]) && level)
{
HVM_DBG_LOG(DBG_LEVEL_VLAPIC,
"level trig mode repeatedly for vector %d\n", vector);
{
int highest_irr = vlapic_find_highest_irr(vlapic);
- if ( highest_irr != -1 && highest_irr >= vlapic->processor_priority )
+ if ( highest_irr != -1 &&
+ ( (highest_irr & 0xF0) > vlapic->processor_priority ) )
{
if ( highest_irr < 0x10 )
{
if (vlapic && vlapic_enabled(vlapic)) {
int highest_irr = vlapic_find_highest_irr(vlapic);
- if (highest_irr != -1 && highest_irr >= vlapic->processor_priority) {
+ if ( highest_irr != -1 &&
+ ( (highest_irr & 0xF0) > vlapic->processor_priority ) ) {
return 1;
}
}